package com.icinfo.cloud.provider.punish.common.datareport.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.util.ObjectUtils;

/**
 * 描述：上报数据类型枚举
 *
 * @author xiangyuyu
 * @date 2022/3/31 09:34
 */
@AllArgsConstructor
public enum ReportDataTypeEnum {
    /**
     * 数据上报类型枚举
     */
    BASE("BASE", "行政处罚基础信息", 10),
    INVESTIGATE("INVESTIGATE", "行政处罚调查信息", 20),
    OBTAIN("OBTAIN", "行政处罚证据信息", 30),
    INFORM("INFORM", "行政处罚事先告知信息", 40),
    HEAR("HEAR", "行政处罚听证信息", 50),
    DECISION("DECISION", "行政处罚决定信息", 60),
    EXECUTE("EXECUTE", "行政处罚执行信息", 70),
    CASE_CLOSED("CASE_CLOSED", "行政处罚结案信息", 80);
    //RELIEF("RELIEF", "行政处罚救济信息", 90),
    //AGENCY("AGENCY", "行政处罚行刑衔接信息", 100),
    //ALL("ALL", "行政处罚历史数据", 110)
    /**
     * 编码
     */
    @Getter
    private String code;
    /**
     * 描述
     */
    @Getter
    private String des;

    /**
     * paixu
     */
    @Getter
    private Integer sort;

    /**
     * 根据code获取value
     *
     * @param code 编码
     * @return 描述内容
     */
    public static String getValueByCode(String code) {
        if (ObjectUtils.isEmpty(code)) {
            return null;
        }
        for (ReportDataTypeEnum e : ReportDataTypeEnum.values()) {
            if (code.equals(e.getCode())) {
                return e.getDes();
            }
        }
        return null;
    }

    /**
     * 根据code获取sort
     *
     * @param code 编码
     * @return 排序
     */
    public static Integer getSortByCode(String code) {
        if (ObjectUtils.isEmpty(code)) {
            return null;
        }
        for (ReportDataTypeEnum e : ReportDataTypeEnum.values()) {
            if (code.equals(e.getCode())) {
                return e.getSort();
            }
        }
        return null;
    }

    /**
     * 描述：校验code是否是合法枚举
     *
     * @param code 枚举code
     * @return boolean 是否合法枚举（true-是/false-否）
     * @author XiangYuYu
     * @date 2021/09/15
     */
    public static boolean isLegalEnumCode(String code) {
        boolean flag = false;
        for (ReportDataTypeEnum e : ReportDataTypeEnum.values()) {
            if (e.getCode().equalsIgnoreCase(code)) {
                flag = true;
                break;
            }
        }
        return flag;
    }

    /**
     * 描述：根据code获取枚举信息
     *
     * @param code 枚举code
     * @return ReportDataTypeEnum 枚举信息
     * @author xiangyuyu
     * @date 2022/11/29
     * @since
     */
    public static ReportDataTypeEnum getEnumInfo(String code) {
        if (ObjectUtils.isEmpty(code)) {
            return null;
        }
        for (ReportDataTypeEnum e : ReportDataTypeEnum.values()) {
            String kCode = e.getCode();
            if (kCode.equals(code)) {
                return e;
            }
        }
        return null;
    }
}
